package high.concurrent.service;

import high.concurrent.model.TasklMessage;
import high.concurrent.request.LockProductRequest;
import high.concurrent.utils.JsonData;
import high.concurrent.vo.ProductVO;

import java.util.List;

public interface ProductService {

    /**
     * 商品列表查询: 注意返回商品库存需要库存-锁定库存
     * @param page    当前页数
     * @param size    每页条数
     * @return
     */
    JsonData selectProductList(Integer page, Integer size);

    /**
     * 商品详情
     * @param productId    商品id
     * @return
     */
    JsonData getProductDetail(Long productId);

    /**
     * 多个商品ID查询对应多个商品信息
     * @param productList  商品id集合
     * @return
     */
    List<ProductVO> selectInProductMsg(List<Long> productList);

    /**
     * 购物车所有商品项锁定
     * @param lockProductRequest
     * @return
     */
    JsonData lockProd(LockProductRequest lockProductRequest);

    /**
     * 校验商品是否需要回退
     * @param productMessage
     * @return
     */
    boolean checkProductTask(TasklMessage productMessage);

}
